package belote.webapp.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;

import belote.model.utilisateur.Utilisateur;
import belote.service.utilisateur.metier.ServiceUtilisateur;
import belote.service.utilisateur.metier.impl.ServiceUtilisateurImpl;
import belote.webapp.Constantes;
import belote.webapp.tools.CookieReader;

public class UtilisateurFilter implements Filter {

	private ServiceUtilisateur serviceUtilisateur;
	
	public UtilisateurFilter() {
		serviceUtilisateur = new ServiceUtilisateurImpl();
	}
	
	@Override
	public void init(FilterConfig pFilterConfig) throws ServletException {
	}

	@Override
	public void doFilter(ServletRequest pRequest, ServletResponse pResponse,
			FilterChain pChain) throws IOException, ServletException {

		Cookie userCookie = new CookieReader(pRequest).getCookie(Constantes.COOKIE.UID);
		if (userCookie != null) {
			
			String uid = userCookie.getValue();
			Utilisateur utilisateur = serviceUtilisateur.recupererParId(uid);
			if (utilisateur != null) {
				pRequest.setAttribute(Constantes.REQUEST.UTILISATEUR, utilisateur);
			}
		}
		
		pChain.doFilter(pRequest, pResponse);
	}
	
	@Override
	public void destroy() {
	}
}
